﻿using Domain.IRepository;

namespace Domain.Model
{
    /// <summary>
    /// 商品实体 (聚合根)
    /// 
    /// </summary>
    public class Product
    {
        //商品领域 7个概念
        //1、实体
        //2、聚合和聚合根
        //3、仓储接口
        //4、领域服务
        //5、值对象（没有ID的实体）
        //6、规约  (过滤实体) 满足条件才能添加数据库
        //7、领域事件

        /// <summary>
        /// 
        /// </summary>
        public int Id { get; set; }

        public string ProductName { get; set; }

        public int ProDuctType { get; set; }

        public DateTime CreateTime { get; set; }

        //public decimal ProductPrice { get; set; }

        public ProductPrice productPrice { get; set; }

        public List<ProductCollect> productCollects { get; set; }   //商品收藏聚合

        public List<ProductImage> productImages { get; set; }  //商品图片聚合



        /// <summary>
        /// 添加商品聚合
        /// </summary>
        /// <param name="priductID"></param>
        /// <param name="priductUrl"></param>
        public void AddProductImage(int priductID, string priductUrl)
        {
            ProductImage productImage = new ProductImage();
            productImage.ProductId = priductID;
            productImage.ImageUrl = priductUrl;
        }
    }

    /// <summary>
    /// 商品价格（值对象）没有主键
    /// 值对象：代替实体，帮助节约表  存储到数据库为json数据 对应数据库的一个字段
    /// </summary>
    public class ProductPrice
    {
        /// <summary>
        /// 真实商品价格
        /// </summary>
        public decimal TProductPrice { get; set; }

        /// <summary>
        /// 虚拟商品价格
        /// </summary>
        public decimal VelProductPrice { get; set; }

        /// <summary>
        /// 打折商品价格
        /// </summary>
        public decimal PProductPrice { get; set; }
    }
}
